gt = classNodePlaceholders.get(gt.getName());
}
}
match = gt.getType().isDerivedFrom(classNodeType.getType());
}
if (match && redirectBoundType.upperBounds!=null) {
for (ClassNode upperBound : redirectBoundType.upperBounds) {
GenericsType gt = new GenericsType(upperBound);
if (gt.isPlaceholder()) {
// check for recursive generic typedef, like in
// <T extends Comparable<? super T>>
if (classNodePlaceholders.containsKey(gt.getName())) {
gt = classNodePlaceholders.get(gt.getName());
}
}
match = match && classNodeType.getType().isDerivedFrom(gt.getType());
}
}
return match;
gt = classNodePlaceholders.get(gt.getName());
}
}
match = (gt.getType().isDerivedFrom(classNodeType.getType())
|| gt.getType().implementsInterface(classNodeType.getType()));
}
if (match && redirectBoundType.upperBounds!=null) {
for (ClassNode upperBound : redirectBoundType.upperBounds) {
GenericsType gt = new GenericsType(upperBound);
if (gt.isPlaceholder()) {
// check for recursive generic typedef, like in
// <T extends Comparable<? super T>>
if (classNodePlaceholders.containsKey(gt.getName())) {
gt = classNodePlaceholders.get(gt.getName());
}
}
match = match &&
(classNodeType.getType().isDerivedFrom(gt.getType())
|| classNodeType.getType().implementsInterface(gt.getType()));
}
}
return match;